Pagination হল একটি টেকনিক যা ডেটাবেস থেকে বড় বড় ডেটা সেটগুলিকে ছোট ছোট অংশে ভাগ করে দেখানোর প্রক্রিয়া। যখন ডেটাবেসে বিশাল পরিমাণ তথ্য থাকে, তখন পুরো ডেটা একবারে লোড করা বা দেখানো হয় না, বরং তথ্যগুলো নির্দিষ্ট পৃষ্ঠা বা অংশে ভাগ করা হয়। Pagination ডেটার একটি নির্দিষ্ট সংখ্যক রেকর্ড প্রতি পৃষ্ঠা বা সেগমেন্টে লোড করার জন্য ব্যবহৃত হয়।
এটি সাধারণত web applications বা APIs এ ব্যবহৃত হয় যেখানে ব্যবহারকারীকে ফলাফলগুলোর একটি নির্দিষ্ট সংখ্যা দেখানো হয়, যাতে সিস্টেমের পারফরম্যান্স এবং ইউজার এক্সপেরিয়েন্স উন্নত হয়।
Pagination এর প্রয়োজনীয়তা:
- Performance Optimization:
- Pagination ডেটাবেস থেকে বিশাল পরিমাণ ডেটা একসাথে লোড করা এড়ায়। এর ফলে সার্ভার বা ডেটাবেসে অতিরিক্ত চাপ পড়বে না এবং পারফরম্যান্স উন্নত হবে।
- একাধিক রেকর্ড লোড করা হলে, প্রতি রেকর্ডের জন্য আলাদা কুয়েরি পাঠানোর প্রয়োজন হয় না, ফলে সিস্টেমের কর্মক্ষমতা বৃদ্ধি পায়।
- User Experience (UX) Enhancement:
- দীর্ঘ ফলাফলের তালিকা দেখানোর জন্য এটি একটি উন্নত পদ্ধতি। ব্যবহারকারী শুধুমাত্র প্রয়োজনীয় তথ্য দেখতে পান, যা তাদের জন্য সহজ এবং দ্রুত উপলব্ধ হয়।
- পৃষ্ঠা পরিবর্তন বা লোড করার সময়, ব্যবহারকারী খুব দ্রুত তথ্য অ্যাক্সেস করতে পারেন, কারণ শুধুমাত্র একটি ছোট অংশ (পৃষ্ঠা) লোড করা হয়।
- Data Navigation:
- Pagination সাহায্য করে ব্যবহারকারীদের বড় ডেটা সেটগুলির মধ্যে সহজে নেভিগেট করতে। এটি ব্যবহারকারীদের বিভিন্ন পৃষ্ঠাগুলোর মধ্যে সুইচ করার সুযোগ দেয়, যেমন পরবর্তী পৃষ্ঠা, আগের পৃষ্ঠা, প্রথম পৃষ্ঠা বা শেষ পৃষ্ঠা।
- Reduced Memory Usage:
- শুধুমাত্র প্রয়োজনীয় ডেটা লোড করা হয়, ফলে মেমরি ব্যবহার কম হয় এবং অ্যাপ্লিকেশন আরও সুষ্ঠুভাবে চলতে পারে।
- Scalability:
- Pagination সিস্টেমের স্কেলেবিলিটি বৃদ্ধি করে। যত বড় ডেটা সেটই হোক না কেন, এটি সঠিকভাবে কার্যকরী হতে পারে।
iBATIS (MyBatis) এ Pagination কিভাবে কাজ করে?
iBATIS (MyBatis) এ pagination বাস্তবায়ন করার জন্য সাধারণত SQL LIMIT এবং OFFSET ব্যবহার করা হয় (যেটি SQL স্ট্যান্ডার্ডের একটি অংশ)। iBATIS বা MyBatis এর সাথে, LIMIT হল পৃষ্ঠা থেকে রেকর্ড সংখ্যা এবং OFFSET হল কোন পয়েন্ট থেকে ডেটা শুরু হবে তা নির্ধারণ করা।
1. Pagination Query (LIMIT & OFFSET)
iBATIS-এ pagination কাজ করার জন্য, আপনি SQL কুয়েরিতে LIMIT এবং OFFSET ব্যবহার করে পৃষ্ঠার ডেটা বের করতে পারেন।
Example: Pagination Query with LIMIT and OFFSET
SQLMap Configuration (SQLMap.xml)
<sqlMap namespace="Employee">
<!-- SQL query for pagination -->
<select id="getEmployeesByPage" parameterClass="map" resultClass="com.example.Employee">
SELECT id, name, salary
FROM employee
ORDER BY id
LIMIT #pageSize# OFFSET #offset#
</select>
</sqlMap>
এখানে:
- pageSize: প্রতি পৃষ্ঠায় কতটি রেকর্ড দেখানো হবে তা নির্ধারণ করে।
- offset: ডেটাবেসের কোন অংশ থেকে রেকর্ড শুরু হবে তা নির্ধারণ করে (যেমন, প্রথম পৃষ্ঠা, দ্বিতীয় পৃষ্ঠা, ইত্যাদি)।
2. Pagination Logic in Java
Java কোডে আপনি পেজিনেশন লজিক যোগ করবেন যাতে পৃষ্ঠা নং অনুযায়ী pageSize এবং offset গণনা করা যায়।
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) throws Exception {
// Create SqlMapClient instance
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
// Pagination parameters
int pageSize = 10; // Number of records per page
int pageNumber = 2; // Page number (2nd page)
int offset = (pageNumber - 1) * pageSize;
// Create parameters map
Map<String, Object> params = new HashMap<>();
params.put("pageSize", pageSize);
params.put("offset", offset);
// Query with pagination
List<Employee> employees = (List<Employee>) sqlMap.queryForList("Employee.getEmployeesByPage", params);
// Print the employees
for (Employee employee : employees) {
System.out.println("Employee Name: " + employee.getName() + ", Salary: " + employee.getSalary());
}
}
}
এখানে:
- pageSize: প্রতি পৃষ্ঠায় ১০টি রেকর্ড দেখানোর জন্য সেট করা হয়েছে।
- pageNumber: দ্বিতীয় পৃষ্ঠা (page 2) দেখতে হবে।
- offset: এই মানটি পৃষ্ঠা অনুযায়ী গণনা করা হয়েছে, যেখানে
(pageNumber - 1) * pageSizeদিয়ে প্রথম রেকর্ডের অবস্থান নির্ধারণ করা হয়।
Pagination এর উপকারিতা এবং ব্যবহার
- ডেটা বিশাল হলে কার্যকরী: যখন ডেটাবেসে বিশাল পরিমাণ ডেটা থাকে, Pagination ডেটা শুধুমাত্র একটি নির্দিষ্ট অংশে বিভক্ত করে দেখাতে সাহায্য করে।
- UI Performance: Web applications এ Pagination ব্যবহার করলে, UI দ্রুত রেসপন্স করে, কারণ সম্পূর্ণ ডেটাসেটের পরিবর্তে একটি নির্দিষ্ট পরিমাণ রেকর্ড প্রদর্শন করা হয়।
- User Convenience: ব্যবহারকারীরা সহজে পৃষ্ঠার মধ্যে নেভিগেট করতে পারেন (যেমন, পরবর্তী পৃষ্ঠা, আগের পৃষ্ঠা, প্রথম পৃষ্ঠা) যা UX উন্নত করে।
- ডেটাবেস থেকে অতিরিক্ত লোড কমানো: ডেটাবেস থেকে শুধু প্রয়োজনীয় ডেটা লোড হওয়ায় সার্ভারের লোড কমে যায় এবং পারফরম্যান্স বাড়ে।
Pagination-এ ব্যবহৃত কিছু গুরুত্বপূর্ণ ধারণা
- Page Number: কোন পৃষ্ঠা দেখানো হচ্ছে তা নির্ধারণ করে।
- Page Size: প্রতি পৃষ্ঠায় কতটি রেকর্ড থাকবে তা নির্ধারণ করে।
- Offset: কোন ডেটার পরে পরবর্তী ডেটা আসবে তা নির্ধারণ করে (ডেটাবেসের কুয়েরি থেকে
OFFSETএর মাধ্যমে নির্ধারণ করা হয়)।
Pagination হল একটি গুরুত্বপূর্ণ প্রক্রিয়া যা iBATIS (MyBatis) বা অন্য যেকোনো ফ্রেমওয়ার্কে ব্যবহৃত হয়। এটি ডেটাবেস থেকে বিশাল পরিমাণ ডেটা বা ফলাফল সমূহকে ছোট ছোট অংশে বিভক্ত করে প্রদর্শন করা হয়, যার মাধ্যমে performance এবং user experience উন্নত করা যায়। iBATIS-এ pagination LIMIT এবং OFFSET ব্যবহার করে কার্যকরভাবে বাস্তবায়িত করা হয়, যা ডেটাবেসের ওপর চাপ কমিয়ে ফাস্ট ডেটা অ্যাক্সেস সম্ভব করে।
Read more